Solid-state drives (“SSD drives”) are becoming increasingly popular for deployment in Redundant Array of Independent Disks (“RAID”) systems to service transactional applications like databases. Such applications typically consist of input and output requests (“I/O requests”) that have small transfer sizes with consecutive I/O requests that are very often not in sequential Logical Block Address (LBA) order (collectively referred to as “random” I/O requests). It is convenient to measure the suitability of a drive for random I/O requests, whether an SSD drive or a spinning magnetic drive, by testing it with a synthetic benchmark tool that issues relatively small I/O commands to random LBA addresses, and measures how many of these can be performed in one second. This provides a measure of the random IOPS speed of the drive. SSD drives typically have a random IOPS speed that is hundreds to thousands of times faster than conventional spinning magnetic drives and so SSD drives are advantageous when random IOPS speed is an issue. Also, unlike conventional spinning magnetic drives, the performance of SSD drives does not degrade significantly if consecutive requests are for any randomly chosen LBA.
Unfortunately, when SSD drives are deployed in traditional RAID-5 and RAID-6 configurations, the random write performance of the RAID set is limited by the need to perform read-modify-write operations. Every random host block write to the RAID array causes the data and parity drives for the RAID stripe to be read, new parity calculated and then the data and parity drives must be over-written. The software complexity typically required to implement the read-modify-write operations in otherwise advantageous RAID-5 and RAID-6 configurations cause random write IOPS to be approximately 25% of random read IOPs even with the benefit of SSD drives, which tend to be more expensive than spinning magnetic drives.
A need continues to exist to reduce software complexity in the IOpath to increase performance while minimizing the cost for storage implementation to add redundancy to the storage pool.